Technology is constantly changing at a rapid pace and it is difficult for many companies to keep up to date with the latest technological developments. In order for companies to compete with their competitors in the market place it is vital that companies keep ahead of the latest technological developments and provide education to their employees to enable the employees to develop the required skills.
Educating employees is a time consuming and expensive task. It takes a considerable amount of time on behalf of a course tutor in preparing course materials and collating the information required. In the IT industry this is particularly a problem when employees need to be able to learn a new programming language, or how to apply a programming language to achieve a particular programming task. Every time a person learns a new programming language, for example, the programing language C which is a registered trade mark of AT&T Bell Laboratories, or Java which is a registered trade mark of Sun Microsystems Inc, each new programming language brings with it its own way of doing things; taking the example of the programming language C, it is important to learn how the pre-processor directives operate, i.e., commands that give instructions to the C Pre-processor whose job it is to modify the source code of a C program before it is compiled, or what libraries are available, the types of reserved words that can be used and types of standard and user-defined identifiers, variable declarations and data types.
A common approach to devising tutorials for learning programming skills has been to produce a tutorial document which references the relevant elements of the source code by line number in a text editor. The person learning the programming skills is then able to read the tutorial document in conjunction with the source code. If the student does not understand, for example, how a particular sort routine works, by referring to the line number of the source code the person can cross reference the line number to the corresponding numbered section in the tutorial document, which explains how the sort routine works.
Another approach to devising programming tutorials can be seen in web based tutorials. The web based tutorial displays a section of source code, that provides a sort routine for example. To find out how a particular element of source code works a hyperlink is provided and by clicking on the hyperlink with a mouse pointer or other input device the required information is displayed. In some examples it is possible that the hyperlink launches an application that runs the compiled code in order to observe the result, for example, how a sort routine sorts elements in an array.
All of the above examples are time consuming on behalf of the person creating the tutorial. If a web based application is being developed, the person developing the tutorial will have to have knowledge of html to create the hyperlinks and further programming knowledge to enable the tutorial to operate interactively with a student. If a more paper based approach is used, then considerable time and effort is spent writing the documentation and cross-referencing the written documentation with the line number of the source code.
Another example is CACTUS, from the University of Madrid Spain, which offers an integrated environment to design tutorial courses for interactive applications. CACTUS is specifically for generating course documentation to teach how to use a graphical user interface. The graphical user interface is described in detail using a purpose built specification language and CACTUS takes the detailed description and from this generates user documentation. A drawback with this approach is the time and effort it takes in creating an interactive application.
Therefore an improved method and system is required for automatically generating a tutorial application based on source code written to achieve a particular task.